// es5 的对象声明与继承

function Person(name, age) {
    this.name = name;
    this.age = age;
    // 示例方法
    this.desc = function () {
        console.log(`${this.name}今年${this.age}岁了`)
        // alert(`${this.name}今年${this.age}岁了`)
    }
}
// 原型链方法
Person.prototype.run = function() {
    console.log(`${this.name}正在run`)
}
// 静态方法
// Person.sleep = function() {
//     console.log(`${this.name}正在sleep`)
// }
var p1 = new Person('Amy', 16);
p1.desc()
p1.run()
// p1.sleep()
// Boy类继承Person类
function Boy(name, age) {
    Person.call(this,name,age) // 对象冒充
}
Boy.prototype = Object.create(Person.prototype);
var b1 = new Boy('Sam', 18);
b1.desc();
b1.run();
// b1.sleep();

// 静态方法
Person.say = function() {
    return "在说话"
}
console.log(Person.say())

/**
 * jquery中$('#id').style('color', 'red')
 * $.get('url', function(data) {})
 */
function $(element) {
    return new Base(element)
}

function Base(element) {
    this.style = function(key, value) {
        var dom = null;
        if (element.startsWith('#')) {
            dom = document.getElementById(element.substring(1));
        } else {
            dom = document.getElementsByClassName(element.substring(1));
        }
        dom.style[key] = value;
    }
}

$('#demo').style('background-color', 'red');